package it.clariter.model;

import it.clariter.dao.SistemaDAO;
import it.clariter.web.action.ActionConstants;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;

/**
 * @author Dario
 *
 */
public class Sistema implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -1308352173242445271L;
	private int idSistema;
	private String progressivo;
	private String meseAnno;
	
	public Sistema () { }

	/**
	 * @return the idSistema
	 */
	public int getIdSistema() {
		return idSistema;
	}

	/**
	 * @param idSistema the idSistema to set
	 */
	public void setIdSistema(int idSistema) {
		this.idSistema = idSistema;
	}

	/**
	 * @return the progressivo
	 */
	public String getProgressivo() {
		return progressivo;
	}

	/**
	 * @param progressivo the progressivo to set
	 */
	public void setProgressivo(String progressivo) {
		this.progressivo = progressivo;
	}

	/**
	 * @return the meseAnno
	 */
	public String getMeseAnno() {
		return meseAnno;
	}

	/**
	 * @param meseAnno the meseAnno to set
	 */
	public void setMeseAnno(String meseAnno) {
		this.meseAnno = meseAnno;
	}

	@Override
	public String toString() {
		return "Sistema [idSistema=" + idSistema + ", progressivo="
				+ progressivo + ", meseAnno=" + meseAnno + "]";
	}	

	public Sistema generaSistema() {
		int progressivoCorrente=0;
		String nuovoProgressivo="";
		ArrayList<Sistema> lista = (ArrayList<Sistema>) new SistemaDAO().getList();
		Sistema sis = lista.get(0);
		Calendar calendar = GregorianCalendar.getInstance();
		//set mese corrente
		String meseCorrente = ""+(calendar.get(Calendar.MONTH)+1);
		if (meseCorrente.trim().length()==1)
			meseCorrente="0"+meseCorrente.trim();
		else
			meseCorrente=meseCorrente.trim();
		
		String annoCorrente=""+calendar.get( Calendar.YEAR);
		annoCorrente=annoCorrente.trim();
		
		String meseAnnoCorrenti=meseCorrente+""+annoCorrente;
		meseAnnoCorrenti=meseAnnoCorrenti.trim();
		
		if(sis.getMeseAnno().equals(meseAnnoCorrenti)){
			progressivoCorrente=Integer.valueOf(sis.getProgressivo());
			progressivoCorrente++;
			nuovoProgressivo=""+progressivoCorrente;
			nuovoProgressivo=nuovoProgressivo.trim();
			for(;nuovoProgressivo.length()<ActionConstants.LUNGHEZZA_PROGRESSIVO;) {
				nuovoProgressivo="0"+nuovoProgressivo;
			}
			sis.setProgressivo(nuovoProgressivo);
		}else {
				sis.setMeseAnno(meseAnnoCorrenti);
				sis.setProgressivo(ActionConstants.PROGRESSIVO_INIZIALE);
		}
		return sis;
	}
	public static void main (String args[]) {
		System.out.println(new Sistema().generaSistema());
	}
}
